// SGJ Apps Bible Input Method (BibleIM).  A collection
// of Java InputMethods enabling the easy typing of Biblical scripts.
// Copyright (C) 2007-2008 Steffen G. Jenkins  

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

// This file is based on the following source file.
/*
Brahmi Kannada Input Method
http://brahmi.sourceforge.net
Copyright (C) 2002  Harsha P Ravnikar <harsha_pr@users.sourcefourge.net>
This file is a part of Brahmi Kannada Input Method
 
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

package uk.org.sgj.BibleIM;

import java.awt.Image;
import java.awt.im.spi.InputMethod;
import java.awt.im.spi.InputMethodDescriptor;
import java.util.Locale;

public abstract class GreekInputMethodDescriptor implements InputMethodDescriptor
{
    
    static final Locale GREEKUK = new Locale("gk", "GK", "uk");
    static final Locale GREEKUS = new Locale("aa", "AA", "us");
    public static final char KGPkeyboardMap[] =
    {
        
// diacriticals are bound to these keys
//              ( rough breathing
//              ) smooth breathing
//              + diaeresis
//              _ macron
//              - breve
//              / acute
//              \ grave
//              = circumflex
//              | iota subscript
        
        '\0',     /*00*/
        '\001',   /*01*/
        '\002',   /*02*/
        '\003',   /*03*/
        '\004',   /*04*/
        '\005',   /*05*/
        '\006',   /*06*/
        '\007',   /*07*/
        '\b',     /*08*/
        '\t',     /*09*/
        '\n',     /*10*/
        '\013',   /*11*/
        '\f',     /*12*/
        '\r',     /*13*/
        '\016',   /*14*/
        '\017',   /*15*/
        '\020',   /*16*/
        '\021',   /*17*/
        '\022',   /*18*/
        '\023',   /*19*/
        '\024',   /*20*/
        '\025',   /*21*/
        '\026',   /*22*/
        '\027',   /*23*/
        '\030',   /*24*/
        '\031',   /*25*/
        '\032',   /*26*/
        '\033',   /*27*/
        '\034',   /*28*/
        '\035',   /*29*/
        '\036',   /*30*/
        '\037',   /*31*/
        ' ',      /*32*/
        
        
        '!',      /*33 ! */
        '"',      /*34 " */
        '#',      /*35 # */
        '$',      /*36 $  */
        '%',      /*37 %  */
        '&',      /*38 & */
        'X',      /*39    */
        '\u0314',      /*40 ( rough breathing*/
        '\u0313',      /*41 ) smooth breathing */
        '*',      /*42 * */
        '\u0308',      /*43 + diaeresis */
        ',',      /*44 , */
        '\u0306',      /*45 - breve */
        '.',      /*46 . */
        '\u0301',      /*47 / acute */
        
        '0', /*48 0*/
        '1', /*49 1*/
        '2', /*50 2*/
        '3', /*51 3*/
        '4', /*52 4*/
        '5', /*53 5*/
        '6', /*54 6*/
        '7', /*55 7*/
        '8', /*56 8*/
        '9', /*57 9*/
        
        ':',      /*58 : */
        ';',      /*59 ;  */
        '<',      /*60 <  */
        '\u0302',      /*61 =  circumflex */
        '>',      /*62 >  */
        '?',      /*63 ?  */
        '@',      /*64 @  */
        
        '\u0391', /*65 A */
        '\u0392', /*66 B */
        '\u03A8', /*67 C */
        '\u0394', /*68 D */
        '\u0395', /*69 E */
        '\u03A6', /*70 F */
        '\u0393', /*71 G */
        '\u0397', /*72 H */
        '\u0399', /*73 I */
        '\u039E', /*74 J */
        '\u039A', /*75 K */
        '\u039B', /*76 L */
        '\u039C', /*77 M */
        '\u039D', /*78 N */
        '\u039F', /*79 O */
        '\u03A0', /*80 P */
        'X', /*81 Q */
        '\u03A1', /*82 R */
        '\u03A3', /*83 S */
        '\u03A4', /*84 T */
        '\u0398', /*85 U */
        '\u03A9', /*86 V */
        'X', /*87 W */
        '\u03A7', /*88 X */
        '\u03A5', /*89 Y */
        '\u0396', /*90 Z */
        
        '[',      /*91 [ */
        '\u0300',     /*92 \  grave */
        ']',      /*93 ] */
        
        '^',      /*94 ^ */
        '\u0304',      /*95 _ macron */
        '`',      /*96 ` */
        
        '\u03B1', /*65 A */
        '\u03B2', /*66 B */
        '\u03C8', /*67 C */
        '\u03B4', /*68 D */
        '\u03B5', /*69 E */
        '\u03C6', /*70 F */
        '\u03B3', /*71 G */
        '\u03B7', /*72 H */
        '\u03B9', /*73 I */
        '\u03BE', /*74 J */
        '\u03BA', /*75 K */
        '\u03BB', /*76 L */
        '\u03BC', /*77 M */
        '\u03BD', /*78 N */
        '\u03BF', /*79 O */
        '\u03C0', /*80 P */
        'X', /*81 Q */
        '\u03C1', /*82 R */
        '\u03C3', /*83 S */
        '\u03C4', /*84 T */
        '\u03B8', /*85 U */
        '\u03C9', /*86 V */
        '\u03C2', /*87 W */
        '\u03C7', /*88 X */
        '\u03C5', /*89 Y */
        '\u03B6', /*90 Z */
        
        'X',      /*123  */
        '\u0345',      /*124 iota subscript */
        'X',      /*125 */
        '~',      /*126 ~ */
        '\177'   /*127 DEL*/
    };
    
    public GreekInputMethodDescriptor()
    {
    }
    
    public boolean hasDynamicLocaleList()
    {
        return false;
    }
    
    public Image getInputMethodIcon(Locale locale)
    {
        return null;
    }
    
    public String toString()
    {
        return getClass().getName();
    }
}
